#Premiers pas avec une créature ##### 10 choses à savoir sur poppy 1. Ouvrir l'interface 2. Instancier Poppy (démarrer la simulation) 3. Redémarrer la simulation 4. Eteindre la simulation 5. Moteurs & capteurs de poppy 6. Bouger - fonction goal_position 7. Bouger - fonction goto_position 8. Instancier d'autres créatures 9. Démarrer avec une créature réelle 10. Particularités des modèles réelle

1 - Ouvrir l'interface

Ouvrir V-REP ou connecter le robot.

Ouvrir Jupyter - ipython vidéo démonstrative

  • via un terminal avec la commande : ipython notebook
  • via l'exécutable: rechercher dans 'tout les programmes' anaconda\IPython (Py 2.7) Notebook
  • via l'exécutable 'Launcher' : rechercher dans 'tout les programmes' anaconda\Launcher

2 - Instancier Poppy

Pour démarrer la simulation ; éxécuter les commandes suivantes:


In [ ]:
from poppy.creatures import PoppyHumanoid
creature = PoppyHumanoid(simulator='vrep')

3 - Redémarrer la simulatiuon


In [ ]:
creature.reset_simulation()

4 - Eteindre la simulation


In [ ]:
import pypot
creature.stop_simulation()
pypot.vrep.close_all_connections()

In [1]:
from poppy.creatures import PoppyHumanoid
poppy = PoppyHumanoid(simulator='vrep')

5 - Moteurs & capteurs

Poppy, comment tu fonctionnes?

In [4]:
print"Réponse:"
print "j'ai", len( poppy.motors ), "moteurs"
print "ils sont tous indexés dans une ", type( poppy.motors ), "qui s'appelle poppy.motors \n\n la voici: "
for m in poppy.motors:
    print "-------------"
    print "nom du moteur: ", m.name
    print "position actuelle du moteur: ", m.present_position, "degrès"


Réponse:
j'ai 25 moteurs
il sont tous indexés dans une  <type 'list'> qui s'appelle poppy.motors 

 la voici: 
-------------
nom du moteur:  l_elbow_y
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  r_elbow_y
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  r_knee_y
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  head_y
position actuel du moteur:  -2.3 degrès
-------------
nom du moteur:  head_z
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  r_arm_z
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  r_ankle_y
position actuel du moteur:  0.1 degrès
-------------
nom du moteur:  r_shoulder_x
position actuel du moteur:  -1.0 degrès
-------------
nom du moteur:  r_shoulder_y
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  r_hip_z
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  r_hip_x
position actuel du moteur:  0.2 degrès
-------------
nom du moteur:  r_hip_y
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  l_arm_z
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  l_hip_x
position actuel du moteur:  -0.3 degrès
-------------
nom du moteur:  l_hip_y
position actuel du moteur:  -2.0 degrès
-------------
nom du moteur:  l_hip_z
position actuel du moteur:  0.1 degrès
-------------
nom du moteur:  abs_x
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  abs_y
position actuel du moteur:  0.1 degrès
-------------
nom du moteur:  abs_z
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  l_ankle_y
position actuel du moteur:  0.1 degrès
-------------
nom du moteur:  bust_y
position actuel du moteur:  0.1 degrès
-------------
nom du moteur:  bust_x
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  l_knee_y
position actuel du moteur:  0.0 degrès
-------------
nom du moteur:  l_shoulder_x
position actuel du moteur:  0.3 degrès
-------------
nom du moteur:  l_shoulder_y
position actuel du moteur:  -0.3 degrès
Explication:

Ici on utilise une liste pour stocker le nom des moteurs: poppy.motors

chaque moteur possède:

  • un nom ; exemple: poppy.head_z.name
  • une id ; exemple: poppy.head_z.id
  • une position courante ; exemple: poppy.head_z.present_position
Aperçu de l'ensemble des moteurs:

6 - Bouger - fonction 'goal_position'

Poppy, tu es prêt ?

In [ ]:
# éteindre la simulation précédente...
import pypot
creature.stop_simulation()
pypot.vrep.close_all_connections()

In [ ]:
# ...avant d'en démarrer une nouvelle.
from poppy.creatures import PoppyHumanoid
poppy = PoppyHumanoid(simulator='vrep')

In [ ]:
# Poppy dit oui
for i in range(2):
    poppy.head_y.goal_position = -20
    poppy.head_y.goal_position = +20
poppy.head_y.goal_position = 0

In [ ]:
#####Il ne se passe rien... si !
#####mais Poppy va trop vite, essayons ça :

In [ ]:
# Poppy dit oui
import time
for i in range(2):
    poppy.head_y.goal_position = -20
    time.sleep(1)
    poppy.head_y.goal_position = +20
    time.sleep(1)
poppy.head_y.goal_position = 0
Explication:

Ici on utilise la fonction 'goal_position', précédée du nom du moteur, précédé du nom de la créature.

Elle accepte des valeurs de positions allant de -180° à +180°

Les lignes de code s'exécutent de façon quasi instantannées ; même si la position (demandée en ligne précédente) n'a pas été atteinte.

Le module 'Time' nous permet d'attendre (grâce à la fonction 'time.sleep') que le moteur ai atteint la position voulue avant d'exécuter la commande suivante.

7 - Bouger - fonction 'goto_position'

Bonjour Poppy

In [ ]:
poppy.l_shoulder_x.goto_position(90,2)
poppy.l_arm_z.goto_position(90,2)
poppy.abs_z.goto_position(10,2)
poppy.l_elbow_y.goto_position(-120,2,wait=True)

for i in range(3):
    poppy.l_elbow_y.goto_position(-90,0.5,wait=True)
    poppy.l_elbow_y.goto_position(-120,0.5,wait=True)
    
poppy.l_shoulder_x.goto_position(0,2)
poppy.l_arm_z.goto_position(0,2)
poppy.abs_z.goto_position(0,2)
poppy.l_elbow_y.goto_position(0,2)
Explication:

Ici on utilise la fonction 'goto_position', précédée du nom du moteur, précédé du nom de la créature.

Elle accepte entre 2 et 3 paramètres:

  • la position en dégrès
  • le temps en secondes pour atteindre cette position
  • paramètre facultatif 'wait=True'

L'option 'wait=True' permet d'attendre que la position soit atteinte avant de passer à la ligne suivante.
Par défaut 'wait=False' ne bloque pas le défilement, on peut donc lancer plusieurs moteurs au même moment.

8 - Démarrer avec d'autres créatures

Poppy, y a t-il d'autres créatures comme toi ?

In [ ]:
for i in range(3):
    poppy.head_y.goto_position(-20,1)
    poppy.head_y.goto_position(+20,1)
poppy.head_y.goto_position(0,0.5)

print "Torso, Ergo, et toute la family"

Plus d'informations sur les prochaines créatures Poppy sur ce topic : Poppy mini family

Instancier Poppy-Torso

Pour démarrer la simulation ; éxécuter les commandes suivantes:


In [ ]:
#si une simulation est active, n'oubliez pas de la quitter
from poppy.creatures import PoppyTorso
torso = PoppyTorso(simulator='vrep')

Instancier Ergo

Pour démarrer la simulation ; éxécuter les commandes suivantes:


In [ ]:
#si une simulation est active, n'oubliez pas de la quitter
from poppy.creatures import PoppyErgo
ergo = PoppyErgo(simulator='vrep')

etc

9 - Démarrer avec une créature réelle

Pour passer d'un programme destiné à une version simulée vers une version réelle, cela nécéssite une unique modification lorsque la créture est instanciée:

Dans votre programme, la ligne...

  • creatures = PoppyHumanoid(simulator='vrep')

...devient :

  • creatures = PoppyHumanoid()

Particularités des modèles réels

  • Les moteurs peuvent être dans deux états: compliant / non compliant

    1. l'état compliant permet de déplacer manuellement les moteurs sans résistance.
    2. l'état non compliant bloque les moteurs.

      Exemple:
      poppy.head_z.compliant = True
      poppy.head_z.compliant = False

  • La vitesse des moteurs peut être modifiée via la fonction 'moving_speed'

    Exemple:
    poppy.head_z.moving_speed = 150 #vitesse en milliseconde

10 - Achat, construction, créer sa créature :

Acheter :
Rendez vous sur : Génération robots plusieurs modèles vous y sont proposés.

Construire :
Rendez vous sur : Assembling Poppy Humanoid une notice et des vidéos vous aident à construire votre poppy

Création :
Retrouvez toute la documentation pour imprimer et acheter individuellement les éléments nécessaires à la construction d'un « pypot robot » sur le site poppy-project.org.

Pour plus d'informations rendez-vous sur le Forum

Aller plus loin

  • La possibilité d'ajouter des objets interactifs (balle, cube, etc) plus de details ici

  • Installation détaillée ici

  • d'autres notebooks pour V-REP ; Torso ; Snap! ; et l'ensemble des notebooks via le site poppy-project.org


In [ ]:
# essaies ton propre code ;)